<?php
/*
	仓库管理
*/

defined('BY_JYA') or exit('error');
$_RQ['op']=$_RQ['op']?$_RQ['op']:'list';
$return=array();
//声明页面上方tab按钮
$tabs=array(
	array('op'=>'list','title'=>'仓库列表'),
	array('op'=>'add','title'=>'创建仓库'),
);
set_html('tabs',$tabs);
//声明列表页
if($_RQ['op']=='list'){
	//初始化返回前端的筛选条件数组
	$return['params']=array();
	//整理列表数据查询条件
	$params=array('uniacid'=>$_SESSION['uniacid']);
	if($_RQ['title']){
		$params['title like']='%'.trim($_RQ['title']).'%';
		$return['params']['title']=$_RQ['title'];
	}
	$psize=15;
	$pindex=intval($_RQ['page'])?:1;
	$parameter=array(
		'params'=>$params,
		'limit'=>array($pindex,$psize),
		'orderby'=>'id desc',
	);
	//执行分页查询
	$list=$this->get_list('depot',$parameter,$total);
	//将查询到的结果数组放入$return以备传回前端
	$return['list']=$list;
	//整理分页
	$return['totalpage'] =intval(ceil($total/$psize));
	$return['params']['page'] =$pindex;
	//声明列表页样式数组
	$htmls=array(
		'type'=>'list',
		'export'=>'export',//声明导出动作op，如无需导出功能，可不声明该字段
		'list'=>array('data'=>'list','list'=>array(
			//列表展示列
			array('type'=>'string','name'=>'title','title'=>'仓库名称',),
			array('type'=>'string','name'=>'address','title'=>'仓库地址',),
		),'action'=>array(
			array('type'=>'post','op'=>'admin','title'=>'管理'),
		)),
		'search'=>array(
			//列表查询表单
			array('type'=>'string','name'=>'title','title'=>'仓库名称','width'=>'50'),
		),
	);
	$return['htmls']=$htmls;
	//把数据返回前端
	exi($return);
}
if($_RQ['op']=='admin'){
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择仓库！','error');
	}
	$this->session('depot_id',$id);
	exi('','','depot.index/');
}
//声明编辑页
if($_RQ['op']=='edit'){
	//编辑页表单项数组
	$edit_fields=array(
		array('type'=>'string','name'=>'title','title'=>'仓库名称','must'=>true),
		array('type'=>'pcd','name'=>'pcd','title'=>'行政区划地址','help'=>''),
		array('type'=>'string','name'=>'address','title'=>'详细地址','help'=>''),
		array('type'=>'string','name'=>'admin_username','title'=>'仓库管理员账号','help'=>'','must'=>true),
		array('type'=>'password','name'=>'admin_password','title'=>'仓库管理员密码','help'=>''),
	);
	if($_RQ['postdata']){
		//处理表单提交
		$post=get_postdata($edit_fields);
		//获取表单数据
		$data=array_fields(array('title','address','pcd'),$post);
		//将数组类型表单数据转为字符串以备入库
		$data['pcd']=$data['pcd']?ijson_encode($data['pcd']):'';
		$id=intval($post['id']);
		if(!$id){
			
			exi('请先选择要编辑的仓库！','error');
		}
		$this->pdo_update('depot',$data,array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
			$operator=array(
				'depot_id'=>$id,
				'name'=>$post['admin_username'],
				'password'=>$post['admin_password'],
			);
			$this->model('depot')->update_admin($operator);
		exi('修改成功！','','list');
	}
	//整理编辑页
	$id=intval($_RQ['id']);
	if(!$id){
		
		exi('请先选择要编辑的仓库！','error');
	}
	$item=$this->pdo_get('depot',array('id'=>$id,'uniacid'=>$_SESSION['uniacid']));
	//整理从数据库获取到的数据，数组型数据要从字符串转成数组以备前端编辑
	$item['pcd']=$item['pcd']?json_decode($item['pcd'],true):array();
	$item['admin_username']=$this->pdo_getcolumn('clerk',array('depot_id'=>$id,'group_id'=>0),'name');
    $return['item']=$item;
	//声明表单页样式数组
	$htmls=array(
		'type'=>'edit',
		'desc'=>'门店信息设置',
		'edit'=>$edit_fields,
	);
	$return['htmls']=$htmls;
	//返回前端
	exi($return);
}
//声明添加页
if($_RQ['op']=='add'){
	//编辑页表单项数组
	$edit_fields=array(
		array('type'=>'string','name'=>'title','title'=>'仓库名称','must'=>true),
		array('type'=>'pcd','name'=>'pcd','title'=>'行政区划地址','help'=>''),
		array('type'=>'string','name'=>'address','title'=>'详细地址','help'=>''),
		array('type'=>'string','name'=>'admin_username','title'=>'仓库管理员账号','help'=>'','must'=>true),
		array('type'=>'password','name'=>'admin_password','title'=>'仓库管理员密码','help'=>''),
	);
	if($_RQ['postdata']){
		//处理表单提交
		$post=get_postdata($edit_fields);
		//获取表单数据
		$data=array_fields(array('title','address','pcd'),$post);
		//将数组类型表单数据转为字符串以备入库
		$data['pcd']=$data['pcd']?ijson_encode($data['pcd']):'';
		
			//插入数据
			//声明插入数据时的默认内容
			$insert=array(
				'uniacid'=>$_SESSION['uniacid'],
				'createtime'=>TIMESTAMP,
			);
			$insert=array_merge($insert,$data);
			$this->pdo_insert('depot',$insert);
			$id=$this->pdo_insertid();
			
			$operator=array(
				'depot_id'=>$id,
				'name'=>$post['admin_username'],
				'password'=>$post['admin_password'],
			);
			$this->model('depot')->create_admin($operator);
			exi('添加成功！','','list');
	}
    $return['item']=array();
	//声明表单页样式数组
	$htmls=array(
		'type'=>'edit',
		'desc'=>'门店信息设置',
		'edit'=>$edit_fields,
	);
	$return['htmls']=$htmls;
	//返回前端
	exi($return);
}
//删除动作
if($_RQ['op']=='del'){
	$dels=array();
	$id=intval($_RQ['id']);
	if($id){
		//删除单个
		$dels[]=$id;
	}elseif($_RQ['del']){
		//批量删除
		$dels=str_array($_RQ['del']);
	}
	if(empty($dels)){
		exi('请先选择要删除的项目！','error');
	}
	//执行删除
	foreach($dels as $id){
		$this->model('depot')->del_depot($id);
		//如有额外操作，可在此执行
	}
	exi('删除成功！');
}
//导出动作
if($_RQ['op']=='export'){
	//整理筛选条件
	$params=array('uniacid'=>$_SESSION['uniacid']);
	if($_RQ['title']){
		$params['title like']='%'.trim($_RQ['title']).'%';
	}
	//声明需要查询哪些字段，为空表示获取所有
	$fields=array();
	$parameter=array(
		'params'=>$params,
		'fields'=>$fields,
		'orderby'=>'id desc',
	);
	//执行分页查询
	$list=$this->get_list('depot',$parameter);
	if($list){
		foreach($list as &$item){
			//整理从数据库获取到的数据
			$item['createtime']=date('Y/m/d H:i:s',$item['createtime']);
		}
	}
	//声明表头和对应字段
	$header=array(
		'title'=>'仓库名称',
		'address'=>'仓库地址',
		'createtime'=>'创建时间',
	);
	//执行导出
	model('core/tools')->export2excel($header,$list,'门店列表');
}